Proximity sensing

ABSTRACT

A processing system for capacitance sensing includes a sensor module and a determination module. The sensor module includes sensor circuitry coupled to sensor electrodes, the sensor module configured to generate sensing signals received with the sensor electrodes. The determination module is connected to the sensor electrodes and configured to obtain, for a predetermined timeframe, a profile from the sensing signals, obtain, for the predetermined timeframe, a noise statistic, and calculate, for the predetermined timeframe, a data signal statistic for the predetermined timeframe using the profile. The determination module is further configured to calculate a signal to noise ratio (SNR) by dividing the data signal statistic by the noise statistic. When the SNR satisfies a predetermined detection threshold, an input object is detected in a sensing region of the capacitance sensing input device.

CROSS REFERENCE TO RELATED APPLICATIONS

The present application contains subject matter that may be related to the subject matter in the following U.S. patent application, which is assigned to a common assignee, has the same inventors as the present application, and is incorporated by reference in its entirety: U.S. patent application Ser. No. 13/801,911, entitled “BASELINE MANAGEMENT FOR SENSING DEVICE,”, being filed concurrently herewith.

FIELD

This invention generally relates to electronic devices.

BACKGROUND

Input devices including proximity sensor devices (also commonly called touchpads or touch sensor devices) are widely used in a variety of electronic systems. A proximity sensor device typically includes a sensing region, often demarked by a surface, in which the proximity sensor device determines the presence, location and/or motion of one or more input objects. Proximity sensor devices may be used to provide interfaces for the electronic system. For example, proximity sensor devices are often used as input devices for larger computing systems (such as opaque touchpads integrated in, or peripheral to, notebook or desktop computers). Proximity sensor devices are also often used in smaller computing systems (such as touch screens integrated in cellular phones).

SUMMARY

In general, in one aspect, embodiments relate to a processing system for capacitance sensing that includes a sensor module and a determination module. The sensor module includes sensor circuitry coupled to sensor electrodes, the sensor module configured to generate sensing signals received with the sensor electrodes. The determination module is connected to the sensor electrodes and configured to obtain, for a predetermined timeframe, a profile from the sensing signals, obtain, for the predetermined timeframe, a noise statistic, and calculate, for the predetermined timeframe, a data signal statistic for the predetermined timeframe using the profile. The determination module is further configured to calculate a signal to noise ratio (SNR) by dividing the data signal statistic by the noise statistic. When the SNR satisfies a predetermined detection threshold, an input object is detected in a sensing region of the capacitance sensing input device.

In general, in one aspect, embodiments relate to a method for capacitance sensing that includes obtaining, for a predetermined timeframe, a profile from sensing signals measured with sensor electrodes of a capacitance sensing input device, obtaining, for the predetermined timeframe, a noise statistic, calculating, for the predetermined timeframe, a data signal statistic for the predetermined timeframe using the profile, and calculating a signal to noise ratio (SNR) by dividing the data signal statistic by the noise statistic. When the SNR satisfies a predetermined detection threshold, the method further includes detecting an input object in a sensing region of the capacitance sensing input device.

In general, in one aspect, embodiments relate to an input device that includes sensor electrodes configured to generate sensing signals for a predetermined timeframe, and a processing system connected to the sensor electrodes. The processing system is configured to obtain, for a predetermined timeframe, a profile from the sensing signals, obtain, for the predetermined timeframe, a noise statistic using the capacitance sensing input device, calculate, for the predetermined timeframe, a data signal statistic for the predetermined timeframe using the profile, calculate a signal to noise ratio (SNR) by dividing the data signal statistic by the noise statistic. The processing system is further configured to detect, when the SNR satisfies a predetermined detection threshold, an input object in a sensing region of the capacitance sensing input device.

Other aspects of the invention will be apparent from the following description and the appended claims.

BRIEF DESCRIPTION OF DRAWINGS

FIGS. 1A-1B show schematic diagrams in one or more embodiments of the invention.

FIGS. 2-6 show flowcharts in one or more embodiments of the invention.

FIG. 7 shows an example in one or more embodiments of the invention.

DETAILED DESCRIPTION

The following detailed description is merely exemplary in nature and is not intended to limit the invention or the application and uses of the invention. Furthermore, there is no intention to be bound by any expressed or implied theory presented in the preceding technical field, background, brief summary or the following detailed description.

Various embodiments of the present invention provide input devices and methods that facilitate improved usability. Specifically, one or more embodiments are directed to obtaining sensing signals measured with a capacitance input device for a predetermined timeframe and calculating a signal to noise ratio (SNR) for the predetermined timeframe. The SNR may be used to detect when an input object is in a sensing region.

In one or more embodiments of the invention, a profile is any representation of data received by different sensor electrodes (discussed below and in FIG. 1A) of an input device (discussed below and in FIG. 1A). In one or more embodiments of the invention, a profile is an ordered set of measured data values, whereby each data value is obtained for a predefined region on an input device. In one or more embodiments of the invention, the profile includes a single measured data value for each sensor electrode represented by the profile. In one or more embodiments of the invention, a separate profile may exist for different portions of the capacitance input device. For example, an individual (i.e., separate or distinct) profile may exist for an x-axis of the input device and an individual profile may exist for a y-axis of the input device.

In one or more embodiments of the invention, a predetermined timeframe corresponds to a unit of time having a start and an end that is defined prior to the start of the predetermined timeframe. In one or more embodiments of the invention, the predetermined timeframe may be the time to obtain a single measured data value from each electrode of the capacitance input device or portion of capacitance input device. In such a scenario, the timeframe may be the time to acquire data for a single profile. The predetermined timeframe may be a snapshot in time or a length of time used to obtain the single measured data value from each sensor electrode represented in the profile.

Turning now to the figures, FIG. 1A is a block diagram of an exemplary input device (100), in accordance with embodiments of the invention. The input device (100) may be configured to provide input to an electronic system (not shown). As used in this document, the term “electronic system” (or “electronic device”) broadly refers to any system capable of electronically processing information. Some non-limiting examples of electronic systems include personal computers of all sizes and shapes, such as desktop computers, laptop computers, netbook computers, tablets, web browsers, e-book readers, and personal digital assistants (PDAs). Additional example electronic systems include composite input devices, such as physical keyboards that include input device (100) and separate joysticks or key switches. Further example electronic systems include peripherals such as data input devices (including remote controls and mice), and data output devices (including display screens and printers). Other examples include remote terminals, kiosks, and video game machines (e.g., video game consoles, portable gaming devices, and the like). Other examples include communication devices (including cellular phones, such as smart phones), and media devices (including recorders, editors, and players such as televisions, set-top boxes, music players, digital photo frames, and digital cameras). Additionally, the electronic system could be a host or a slave to the input device.

The input device (100) can be implemented as a physical part of the electronic system, or can be physically separate from the electronic system. As appropriate, the input device (100) may communicate with parts of the electronic system using any one or more of the following: buses, networks, and other wired or wireless interconnections. Examples include I²C, SPI, PS/2, Universal Serial Bus (USB), Bluetooth, RF, and IRDA.

In FIG. 1A, the input device (100) is shown as a proximity sensor device (also often referred to as a “touchpad” or a “touch sensor device”) configured to sense input provided by one or more input objects (140) in a sensing region (120). Example input objects include fingers and styli, as shown in FIG. 1A.

Sensing region (120) encompasses any space above, around, in and/or near the input device (100) in which the input device (100) is able to detect user input (e.g., user input provided by one or more input objects (140)). The sizes, shapes, and locations of particular sensing regions may vary widely from embodiment to embodiment. In some embodiments, the sensing region (120) may have a rectangular shape when projected onto an input surface of the input device (100).

FIG. 1B shows an example sensing region (120) of an input device (100) in one or more embodiments of the invention. As shown in FIG. 1B, in some embodiments, the sensing region (120) extends from a surface of the input device (100) in one or more directions into space until signal-to-noise ratios prevent sufficiently accurate object detection. The distance to which this sensing region (120) extends in a particular direction, in various embodiments, may be on the order of less than a millimeter, millimeters, centimeters, or more, and may vary significantly with the type of sensing technology used and the accuracy desired. In such embodiments, the sensing region may include a surface sensing region (150) and an above surface sensing region (160).

In many embodiments, the surface sensing region (150) corresponds to a portion of the sensing region that has contact with an input surface (e.g. a touch surface) of the input device (100) and/or contact with an input surface of the input device (100) coupled with some amount of applied force or pressure. Here, the contact corresponds to a physical touching between the input object and the input surface. In various embodiments, input surfaces may be provided by surfaces of casings within which the sensor electrodes reside, by face sheets applied over the sensor electrodes or any casings, etc. In such a scenario, the contact with the input surface may correspond to contact with the surfaces of casings, face sheets or any other housing of the sensor electrodes.

In contrast, in many embodiments, the above surface sensing region (160) corresponds to a portion of the sensing region that does not involve contact with the input surface. In other words, the above surface sensing region (160) does not include a portion of the sensing region that physically touches or is physically connected to the input device. The above surface sensing region (160) is distinct from and does not overlap with the surface sensing region. Further, although the terms surface and above surface are used herein, the above surface sensing region may be angularly offset from the surface sensing region. In other words, the above surface sensing region may include any area that is capable of being measured by the sensing electrodes and that is distinct from and non-overlapping with the surface sensing region. For example, the above surface sensing region may include areas that are next to the input device (100) and do not touch the input surface. In various embodiments, the surface sensing region (150) may further correspond to a portion of the sensing region that is proximate with the input surface of the input device, where the portion of the sensing region that is proximate the input surface is not comprised within the above surface sensing region. In many embodiments, the surface sensing region corresponds to a first portion of the sensing region and the above the surface sensing region corresponds to a second portion of the sensing region, where the first portion of the sensing region is between the surface of the input device and the second portion of the sensing region. Further, in one embodiment, the sensing surface region and the above sensing region are configurable parameters, such that portions of the sensing region that are comprised within in each is a configurable parameter.

Returning to FIG. 1A, the input device (100) may utilize any combination of sensor components and sensing technologies to detect user input in the sensing region (120). The input device (100) comprises one or more sensing elements for detecting user input. As several non-limiting examples, the input device (100) may use capacitive, elastive, resistive, inductive, magnetic, acoustic, ultrasonic, and/or optical techniques. In one or more embodiments of the invention, the input device (100) is a capacitance sensing input device. In such embodiments, the sensing electrodes may include functionality to use capacitive techniques alone or in combination with other sensing techniques.

Some implementations are configured to provide images that span one, two, three, or higher dimensional spaces. Some implementations are configured to provide projections of input along particular axes or planes.

In some inductive implementations of the input device (100), one or more sensing elements pick up loop currents induced by a resonating coil or pair of coils. Some combination of the magnitude, phase, and frequency of the currents may then be used to determine positional information.

In some capacitive implementations of the input device (100), voltage or current is applied to create an electric field. Nearby input objects cause changes in the electric field, and produce detectable changes in capacitive coupling that may be detected as changes in voltage, current, or the like.

Some capacitive implementations utilize arrays or other regular or irregular patterns of capacitive sensing elements to create electric fields. In some capacitive implementations, separate sensing elements may be ohmically shorted together to form larger sensor electrodes. Some capacitive implementations utilize resistive sheets, which may be uniformly resistive.

Some capacitive implementations utilize “self capacitance” (or “absolute capacitance”) sensing methods based on changes in the capacitive coupling between sensor electrodes and an input object. In various embodiments, an input object near the sensor electrodes alters the electric field near the sensor electrodes, thus changing the measured capacitive coupling. In one implementation, an absolute capacitance sensing method operates by modulating sensor electrodes with respect to a reference voltage (e.g. system ground), and by detecting the capacitive coupling between the sensor electrodes and input objects.

Some capacitive implementations utilize “mutual capacitance” (or “transcapacitance”) sensing methods based on changes in the capacitive coupling between sensor electrodes. In various embodiments, an input object near the sensor electrodes alters the electric field between the sensor electrodes, thus changing the measured capacitive coupling. In one implementation, a transcapacitive sensing method operates by detecting the capacitive coupling between one or more transmitter sensor electrodes (also “transmitter electrodes”) and one or more receiver sensor electrodes (also “receiver electrodes”). Transmitter sensor electrodes may be modulated relative to a reference voltage (e.g., system ground) to transmit transmitter signals. Receiver sensor electrodes may be held substantially constant relative to the reference voltage to facilitate receipt of resulting signals. A resulting signal may comprise effect(s) corresponding to one or more transmitter signals, and/or to one or more sources of environmental interference (e.g. other electromagnetic signals). Sensor electrodes may be dedicated transmitters or receivers, or may be configured to both transmit and receive. In one or more embodiments, a resulting signal may be referred to as a sensing signal.

Some capacitive implementations utilize both transcapacitance and absolute capacitance sensing methods. In other words, some capacitive implementations are a hybrid of transcapacitance and absolute capacitance sensing methods based on changes in the capacitive coupling between sensor electrodes and between sensor electrodes and an input object.

In various embodiments, the background capacitance of a sensor device may be determined. The background capacitance of a sensor device is the capacitive frame associated with no input object in the sensing region. The background capacitance changes with the environment and operating conditions, and may be estimated in various ways. For example, some embodiments take “baseline frames” when no input object is determined to be in the sensing region, and use those baseline images as estimates of their background capacitances. Baseline frames may be referred to as baseline images, baseline profiles, baseline measurements, baselines, or the like.

Capacitive images can be adjusted for the background capacitance of the sensor device for more efficient processing. Some embodiments accomplish this by “baselining” measurements of the change in capacitance to produce a “baselined capacitive frame”, “delta profile”, a “delta measurement” or a “delta frame.” That is, some embodiments compare the measurements forming a sensor frame with appropriate “baseline values” of a “baseline frame” and determine changes from that baseline image. In various embodiments, the sensor frame may comprise one or more profiles (or similar representation of measured data) or a capacitive image.

In FIG. 1A, a processing system (110) is shown as part of the input device (100). The processing system (110) is configured to operate the hardware of the input device (100) to detect input in the sensing region (120). The processing system (110) comprises parts of or all of one or more integrated circuits (ICs) and/or other circuitry components. For example, a processing system for a mutual capacitance sensor device may comprise transmitter circuitry configured to transmit signals with transmitter sensor electrodes, and/or receiver circuitry configured to receive signals with receiver sensor electrodes). The processing system (110) may include all, part, or none of the sensor.

In some embodiments, the processing system (110) also comprises electronically-readable instructions, such as firmware code, software code, and/or the like. In some embodiments, components composing the processing system (110) are located together, such as near sensing element(s) of the input device (100). In other embodiments, components of processing system (110) are physically separate with one or more components close to sensing element(s) of input device (100), and one or more components elsewhere. For example, the input device (100) may be a peripheral coupled to a desktop computer, and the processing system (110) may comprise software configured to run on a central processing unit of the desktop computer and one or more ICs (perhaps with associated firmware) separate from the central processing unit. As another example, the input device (100) may be physically integrated in a phone, and the processing system (110) may comprise circuits and firmware that are part of a main processor of the phone. In some embodiments, the processing system (110) is dedicated to implementing the input device (100). In other embodiments, the processing system (110) also performs other functions, such as operating display screens, driving haptic actuators, etc.

The processing system (110) may be implemented as a set of modules that handle different functions of the processing system (110). Each module may comprise circuitry that is a part of the processing system (110), firmware, software, or a combination thereof. In various embodiments, different combinations of modules may be used. Example modules include hardware operation modules for operating hardware such as sensor electrodes and display screens, data processing modules for processing data such as sensor signals and positional information, and reporting modules for reporting information. Further example modules include sensor operation modules configured to operate sensing element(s) to detect input, identification modules configured to identify gestures such as mode changing gestures, and mode changing modules for changing operation modes.

In one or more embodiments of the invention, the processing system (110) includes a determination module (not shown). The determination module may correspond to hardware, software, firmware, or a combination thereof. In one or more embodiments of the invention, the determination module includes functionality to calculate an SNR. An SNR is an estimate of the amount of data signal as compared to noise signal in a profile. In one or more embodiments of the invention, a data signal is the amount of a signal or size of the measured data value(s) that are attributable to an input object in the sensing region. In one or more embodiments of the invention, a noise signal is the amount of a signal or size of the measured data value(s) that are attributable to noise in the sensing region. The determination module may further include functionality to perform one or more steps of FIGS. 2-6.

In some embodiments, the processing system (110) responds to user input (or lack of user input) in the sensing region (120) directly by causing one or more actions. Example actions include changing operation modes, as well as GUI actions such as cursor movement, selection, menu navigation, and other functions. In some embodiments, the processing system (110) provides information about the input (or lack of input) to some part of the electronic system (e.g. to a central processing system of the electronic system that is separate from the processing system (110), if such a separate central processing system exists). In some embodiments, some part of the electronic system processes information received from the processing system (110) to act on user input, such as to facilitate a full range of actions, including mode changing actions and GUI actions.

For example, in some embodiments, the processing system (110) operates the sensing element(s) of the input device (100) to produce electrical signals indicative of input (or lack of input) in the sensing region (120). The processing system (110) may perform any appropriate amount of processing on the electrical signals in producing the information provided to the electronic system. For example, the processing system (110) may digitize analog electrical signals obtained from the sensor electrodes. As another example, the processing system (110) may perform filtering or other signal conditioning. As yet another example, the processing system (110) may subtract or otherwise account for a baseline, such that the information reflects a difference between the electrical signals and the baseline. As yet further examples, the processing system (110) may determine positional information, recognize inputs as commands, recognize handwriting, and the like.

“Positional information” as used herein broadly encompasses absolute position, relative position, velocity, acceleration, and other types of spatial information. For example, positional information may include height of the input object(s) above the sensing surface, a position, an amount of jitter, and/or other information about the position of the input object(s). A height may be an absolute height or a height as measured on a scale (e.g., a relative height). The position may include an x-coordinate identifier and a y-coordinate identifier of the input object, or another technique for reporting position. Exemplary “zero-dimensional” positional information includes near/far or contact/no contact information. Exemplary “one-dimensional” positional information includes positions along an axis. Exemplary “two-dimensional” positional information includes motions in a plane. Exemplary “three-dimensional” positional information includes instantaneous or average velocities in space. Further examples include other representations of spatial information. Historical data regarding one or more types of positional information may also be determined and/or stored, including, for example, historical data that tracks position, motion, or instantaneous velocity over time.

In some embodiments, the input device (100) is implemented with additional input components that are operated by the processing system (110) or by some other processing system. These additional input components may provide redundant functionality for input in the sensing region (120), or some other functionality. FIG. 1A shows buttons (130) near the sensing region (120) that can be used to facilitate selection of items using the input device (100). Other types of additional input components include sliders, balls, wheels, switches, and the like. Conversely, in some embodiments, the input device (100) may be implemented with no other input components.

In some embodiments, the input device (100) comprises a touch screen interface, and the sensing region (120) overlaps at least part of an active area of a display screen. For example, the input device (100) may comprise substantially transparent sensor electrodes overlaying the display screen and provide a touch screen interface for the associated electronic system. The display screen may be any type of dynamic display capable of displaying a visual interface to a user, and may include any type of light emitting diode (LED), organic LED (OLED), cathode ray tube (CRT), liquid crystal display (LCD), plasma, electroluminescence (EL), or other display technology. The input device (100) and the display screen may share physical elements. For example, some embodiments may utilize some of the same electrical components for displaying and sensing. As another example, the display screen may be operated in part or in total by the processing system (110).

It should be understood that while many embodiments of the invention are described in the context of a fully functioning apparatus, the mechanisms of the present invention are capable of being distributed as a program product (e.g., software) in a variety of forms. For example, the mechanisms of the present invention may be implemented and distributed as a software program on information bearing media that are readable by electronic processors (e.g., non-transitory computer-readable and/or recordable/writable information bearing media readable by the processing system 110). Additionally, the embodiments of the present invention apply equally regardless of the particular type of medium used to carry out the distribution. Examples of non-transitory, electronically readable media include various discs, memory sticks, memory cards, memory modules, and the like. Electronically readable media may be based on flash, optical, magnetic, holographic, or any other storage technology.

FIGS. 2-6 show flowcharts in one or more embodiments of the invention. While the various steps in these flowcharts are presented and described sequentially, some or all of the steps may be executed in different orders, may be combined or omitted, and some or all of the steps may be executed in parallel. Furthermore, the steps may be performed actively or passively. For example, some steps may be performed using polling or be interrupt driven in accordance with one or more embodiments of the invention. By way of an example, determination steps may not require a processor to process an instruction unless an interrupt is received to signify that condition exists in accordance with one or more embodiments of the invention. As another example, determination steps may be performed by performing a test, such as checking a data value to test whether the value is consistent with the tested condition in accordance with one or more embodiments of the invention.

FIG. 2 shows a flowchart for using an SNR in one or more embodiments of the invention. In Step 201, a profile corresponding to a predetermined timeframe is obtained. Obtaining a profile may include determining a measured data value corresponding to a resulting signal (or sensing signal) received with each sensor electrode. The resulting signals (or sensing signals) may be received at once or over a span of time. For example, the sensor electrodes may receive the resulting signals at one time and output the corresponding measured data values at one time. By way of another example, the sensor electrodes may receive resulting signals and output corresponding data row by row or column by column. Once the measured data values are determined, the measured data values may be grouped into the profile. Preprocessing may or may not be performed on the measured data values or on the profile before the profile is obtained in one or more embodiments of the invention.

The term “profile” is used herein in the general sense and in various embodiments while a profile may be shown and discussed as corresponding to an analog representation of data, this is not intended to be limiting, and they may also be discrete values. Further, a profile may also be alternatively referred to as a projection or a combined measurement.

In Step 203, the profile is filtered to reduce noise. For example, in one or more embodiments of the invention, the profile may be temporally filtered, spatially filtered, or a combination thereof. Specifically, temporally filtering the profile includes filtering based on previous profiles. Such removal of noise may include adjusting the profile based on a current identified baseline. A baseline is an expected profile when no data signal exists. The baseline may account for interference resulting from other objects in the sensing region, temperature changes, and/or other environmental effects. In one embodiment, spatially filtering the profile includes spatial averaging across the spatial dimension of the profile.

In Step 205, the SNR is calculated using the profile in one or more embodiments of the invention. In one or more embodiments of the invention, the SNR is calculated using the temporally and/or spatially filtered profile from Step 201. Calculating the SNR may be performed as discussed below and in FIG. 4.

Continuing with FIG. 2, in Step 207, a determination is made whether one or more input objects are detected using the SNR in one or more embodiments of the invention. In particular, a determination is made whether the SNR satisfies a detection threshold. An SNR may be determined to satisfy a detection threshold, for example, when the value of the SNR is greater than the detection threshold. The detection threshold may vary temporally.

An SNR may also be determined to satisfy a detection threshold when the value of the SNR is at least the value of the detection threshold.

If no input object is detected in Step 207, then the method may proceed to end. Specifically, the result of analyzing the profile may be that no input object is detected for the current timeframe. In such a scenario, no actions are performed with respect to any input object in one or more embodiments of the invention. Alternatively, the action may be to report that nothing is detected. In one or more embodiments of the invention, when no input object is detected, various values may be updated. For example, the noise statistic and/or baseline may be updated when no object is detected in the sensing region.

If an input object is detected, the flow may proceed to Step 209. In Step 209, the profile is filtered. In one or more embodiments of the invention, the filtering of the profile in Step 209 is spatial filtering. Spatial filtering may include padding the profile to obtain a padded profile, calculating a filtered padded profile, extracting the filtered profile, and interpolating the profile. Padding the profile may include adding padded values to the set of measured data values, whereby the padded values are added adjacent to edges of the measured data values (i.e., the padded values become neighbors of measured data values missing at least one neighbor). The padded values may be, for example, zero. Other padded values may be used without departing from the scope of the claims.

Calculating the filtered padded profile may include convolving the padded profile with a filter template. The filtered profile is extracted to remove the padded values from the filtered padded profile. Further, the filtered profile is interpolated for templates having an even number of elements. In one or more embodiments of the invention, a filter template is selected from a set of filter templates. The filter template is applied to the profile.

Continuing with FIG. 2, in Step 211, the profile is segmented to obtain a segmented profile having one or more segments. The segmenting includes partitioning the profile to represent individual contiguous regions, that each may have an input object. The partitioning is based on the measured data values with respect to surrounding measured data values.

For example, consider the scenario in which two input objects are in the sensing region, and an input object produces one or more high measured data values from a sensing electrode. In the example, because two input objects are in the sensing region, the measured data values include two regionally maximum values, each corresponding to an input object, separated in the ordered set by at least one smaller value (i.e., a local minimum). The segmenting of the profile partitions may be based on the ordered set of the profile, such that the two regionally maximum values of the profile are in individual segments.

In Step 213, the SNR is calculated for each segment of the segmented profile. Calculating the SNR for each segment may be performed as discussed below and shown in FIG. 4 with the following modification. Rather than using the entire profile for the SNR calculation, only the portion of the profile corresponding to the segment is used for the calculation. The steps of FIG. 4 may repeat for each segment.

Continuing with FIG. 2, in Step 215, a determination is made whether an object is detected using the segment SNR. Specifically, a determination is made whether one or more of the segment SNR(s) satisfies the detection threshold. Determining whether a segment SNR satisfies the detection threshold may be performed similar to determining whether an SNR satisfies the detection threshold as discussed above and in Step 207.

If none of the segment SNR(s) satisfy the detection thresholds, then the method may proceed to end. Specifically, the result of analyzing the profile may be that no input object is detected for the current timeframe. In such a scenario, no actions are performed in one or more embodiments of the invention. Alternatively, the action may be to report that nothing is detected.

If an input object is detected for at least one segment using the segment SNR corresponding to the segment, then the flow may proceed to Step 217 for each segment of the profile in which an input object is detected. In Step 217, positional information for input object(s) in the segments is calculated. In one or more embodiments of the invention, the positional information is calculated individually for each segment. Calculating the positional information may include calculating a position of the input object along an axis or projected on the input surface and calculating a height of the input object. For example, the position may be interpolated using the positions surrounding the position of the sensor electrode producing a maximum value in the filtered profile for the segment (i.e., a local maximum). Alternatively, in various embodiments, the local minimum or other identifier may indicate the position.

In one or more embodiments of the invention, calculating positional information may include calculating a height of the input object. Specifically, the input object may be in the surface sensing region or an above surface sensing region. The height may be estimated based on SNR. In particular, the SNR is inversely proportional to the height of the input object in one or more embodiments of the invention. Thus, the higher the input object is above the input surface, the lower the value of the SNR. In other words, the farther away a detected input object is from the sensing electrodes (e.g., by height), more noise signal exists in relation to data signal. Alternatively or additionally, the height may be estimated based on the size of the data value in the profile at the position. As discussed, the height may be an absolute height, such as presented in millimeters, centimeters, etc., or a relative height, such as on a scale. For example, a relative height may be based on a scale of zero to two hundred fifty five with zero being on or within one millimeter of the input surface.

In Step 219, jitter is reduced and a rate is limited by filtering position and height in positional information for each segment having an input object to obtain filtered positional information for the segment. Jitter is quick unintentional movement of the input object over the sensing region. Jitter may be reduced and the rate may be limited using a temporal low pass filter.

In Step 221, an action is performed based on the calculated positional information and the SNR. The action may be to report the filtered positional information, such as to the host or a component of the host. In such a scenario, the host may perform one or more actions based on the positional information and SNR. The action may be to change the display of a graphical user interface (GUI), such a show that a cursor or pointer has move, show certain GUI component highlighted, perform an action defined by GUI component corresponding to the position (e.g., transition to another screen, make a phone call, or perform another GUI component defined action), or perform another action. The SNR may be used as an estimate of certainty in the positional information and input object to determine whether to perform the action.

Although FIG. 2 shows analyzing a single profile, the steps of FIG. 2 may repeat for each timeframe. Specifically, FIG. 2 may be continually performed over multiple timeframes.

FIG. 3 shows a flowchart for aggregating results from multiple profiles where each profile corresponds to a different axis. In Step 301, an x-axis result is obtained using the x-axis profile for the x-axis. Specifically, FIG. 2 may be performed for a profile from the x-axis for a particular timeframe. In one or more embodiments of the invention, the action in Step 221 of FIG. 2 may be replaced with the action in Step 307 of FIG. 3 (described below) or may be to report the positional information to a module that performs the Steps of FIG. 3. The result may be whether one or more input objects are detected along the x-axis, and, if detected, positional information for the x-axis for each input object.

In Step 303, a y-axis result is obtained using the y-axis profile for the y-axis. Specifically, for the same timeframe as used in Step 301, a y-axis profile is obtained and analyzed using the steps of FIG. 2 in one or more embodiments of the invention. The result may be whether one or more input objects are detected along the y-axis, and, if detected, positional information for the y-axis for each input object.

In Step 305, the x-axis result and the y-axis result is aggregated to obtain an aggregated result. By way of an example and not to limit the scope of the claims, the following Table 1 provides an example of how the positional information of the results may be aggregated. In Table 1, X1 and X2 are each positions along the x-axis, Y1 and Y2 are each positions along the y-axis. Further, the use of “[” and “]” indicates an ordered set, whereby the aggregated position for each input object may be by taking the same or alternate ordered element from each ordered set.

TABLE 1 Profile X Position(s) Profile Y Position(s) Reported Position(s) None None None X₁ None None None Y₁ None X₁ Y₁ X₁, Y₁ X₁, X₂ Y₁ [X₁, X₂], [Y₁, Y₁] X₁ Y₁, Y₂ [X₁, X₁], [Y₁, Y₂] X₁, X₂ Y₁, Y₂ [X₁, X₂], [Y₁, Y₂]

Additionally, in one or more embodiments of the invention, the SNR and/or the common mode (CM) offsets from each axis may be used to determine whether to inhibit performing the action, such as reporting, based on the positional information. By way of an example and not to limit the scope of the claims, the following Table 2 provides an example of how the SNR of the results may be aggregated. In Table 2, low and high refer to whether the SNR and CM offsets are above or below a defined SNR threshold and defined CM threshold, respectively, and don't care means that the value of the CM offset is irrelevant.

TABLE 2 Profile X SNR/CM Profile Y SNR/CM offset offset Inhibit Action Low/Low Low/Low No Low/High Low/High Yes Low/Don't care High/Don't care Yes High/Don't care Low/Don't care Yes High/Don't care High/Don't care No

In Step 307, an action is performed based on the aggregated result. The action may be performed in a similar manner discussed above with reference to Step 221 of FIG. 2 using the aggregated result.

FIG. 4 shows a flowchart for calculating an SNR in one or more embodiments of the invention. The profile referenced below and in FIG. 4 may be the original profile, a filtered profile, a segment of the profile, a filtered profile segment, etc. In Step 401, a noise statistic describing the noise is obtained. The noise statistic is any measure describing an attribute of noise for the profile. For example, the noise statistic may be standard deviation, variance, or any other measure or combination thereof. Obtaining the noise statistic is discussed below and in FIG. 5.

Continuing with FIG. 4, in Step 403, a data plus noise signal statistic is calculated from the profile. In one or more embodiments of the invention, calculating the data plus noise signal statistic is performed by calculating the statistic across the entire profile. In one or more embodiments of the invention, the statistic calculated in Step 401 is the same type of statistic calculated in Step 403. For example, if variance is used in Step 401, then variance is calculated in Step 403.

In Step 405, using the noise statistic and the data plus noise signal statistic, a data signal statistic is calculated. In one or more embodiments of the invention, the data signal is assumed independent of the noise signal. In such embodiments, calculating the data signal statistic may be performed by subtracting the noise statistic from the data plus noise signal statistic. If a dependency is assumed, then other statistical techniques may be used to calculate the data statistic.

In Step 407, the SNR is calculated by dividing the data signal statistic by the noise statistic.

FIG. 5A shows a flowchart for calculating a noise statistic in one or more embodiments of the invention. In one or more embodiments of the invention, the noise statistic is estimated based on previous profiles. In other words, a timeframe lag exists between when the noise statistic is calculated and when the noise statistic is used. Thus, the noise statistic calculated in FIG. 5A is used for a subsequent profile in the relation to the profile used to calculate the noise statistic.

In Step 501, the SNR is calculated. Calculating the SNR may be performed as discussed above and in FIG. 4. In Step 503, a determination is made whether the SNR satisfies the predetermined detection threshold. Determining whether the SNR satisfies the predetermined detection threshold may be performed as discussed above and in Step 207 of FIG. 2.

Continuing with FIG. 5A, if the SNR satisfies the predetermined detection threshold, then the previous noise statistic is used. Specifically, if the SNR satisfies the predetermined detection threshold, then data signal is determined to exist in the profile. In such a scenario, the flowchart of FIG. 5A may set the previously calculated noise statistic as the current noise statistic in Step 505.

In Step 507, if the SNR does not satisfy the predetermined detection threshold, then a noise signal estimate is generated for the profile. In one or more embodiments of the invention, the noise signal estimate includes a data value for each sensor electrode represented in the profile. In one or more embodiments, calculating the noise estimate includes removing noise attributable to a sensor electrode already accounted for by the sensor electrode's neighboring sensor electrode.

In Step 509, the noise statistic is calculated for the current profile. Calculating the noise statistic is performed based on the type of statistic. For example, if the noise statistic is variance, calculating noise statistic may be performed using techniques for calculating variance from a set of data values corresponding to the noise estimate.

In Step 511, the noise statistic is updated using the current profile noise statistic. In one or more embodiments of the invention, the noise statistic is temporally averaged. Thus, updating the noise statistic includes updating the temporal average of the noise statistic from past profiles with the noise statistic for the current profile. The updated noise statistic may be used as the current noise statistic. As discussed above, the current noise statistic is used in calculating SNR.

Turning now to the flowchart of FIG. 5B, in Step 513, the profile is filtered. In one or more embodiments, the profile is temporally and/or spatially filtered. The profile may be temporally and spatially filtered using various known filtering techniques. In Step 515, a noise signal estimate from the profile is generated. In one or more embodiments of the invention, the noise signal estimate includes a data value for each sensor electrode represented in the profile. In one or more embodiments, calculating the noise estimate includes removing noise attributable to a sensor electrode already accounted for by the sensor electrode's neighboring sensor electrode.

In Step 517, the noise statistic is calculated for the current profile. Calculating the noise statistic is performed based on the type of statistic. For example, if the noise statistic is variance, calculating noise statistic may be performed using techniques for calculating variance from a set of data values corresponding to the noise estimate.

In Step 519, the noise statistic is updated using the current profile noise statistic. In one or more embodiments of the invention, the noise statistic is temporally averaged. Thus, updating the noise statistic includes updating the temporal average of the noise statistic from past profiles using the noise statistic for the current profile. The updated noise statistic may be used as the current noise statistic. As discussed above, the current noise statistic is used in calculating SNR.

The following sets of equations are example equations for calculating SNR when the statistic is variance. The following provides an example only and is not intended to limit the scope of the claims. Other techniques and equations may be used. Further, the following equations use various variables. Table 3 below provides a description of each variable that are used in the equations.

TABLE 3 Variable Description D Delta profile (i.e., the profile once the baseline is removed) n The number of positions as defined by number of sensor electrodes that capture measured data values for the profile i An iterator for iterating over the number of positions j An iterator for iterating over successive profiles k A specific timeframe m Number of successive profiles for noise calculation D_(k) ^(noise)(i) Profile noise estimate at timeframe k and position i V_(k) ^(noise)(i) Variance of noise at timeframe k and position i aveV_(k) ^(noise) Average of variance of noise for timeframe k D_(k) ^(detrended)(i) De-trended profile at timeframe k and position i D_(k) ^(detrended) De-trended profile at timeframe k mean(D_(k)) Mean of the delta profile D_(k) ^(ave) De-trended profile averaged over successive profiles ending at timeframe k V_(k) ^(aveprofile) Spatial variance of the de-trended profile averaged over successive profiles ending at timeframe k V_(k) ^(profile) Instantaneous spatial variance of the de-trended profile at timeframe k aveV_(k) ^(Profile) Average instantaneous spatial variance of the de-trended profile at timeframe k over the prior p-1 timeframes x_(k) Low pass filter state (the filtered position or Z estimate) α Low pass filter discrete eigenvalue. In one or more embodiments of the invention, this value is limited to be in the range of [0, 1] and 1-α is proportional to (snr- threshold)/threshold u_(k) The unfiltered position or Z value input to the low pass filter

In the following example equations, consider the scenario in which a filtered delta profile D_(k) of dimension 1×n exists at timeframe k. Further, in the equations, variance is used as the noise statistic, data plus noise signal statistic, and data statistic for the SNR calculations.

The noise variance may be calculated by applying a spatial first difference to the filtered delta profile to estimate the profile noise, and calculating and recursively averaging over successive profiles the noise spatial variance when the profile SNR is small, such as ten percent of the SNR threshold level. In one or more embodiments of the invention, the averaging may improve the noise variance estimate.

The profile noise signal estimate (D_(k) ^(noise)) may be calculated using equation (Eq.) 1: D _(k) ^(noise)(i)=D _(k)(i+1)−D _(k)(i) for i=1:n−1  Eq. 1

The instantaneous noise spatial variance (V_(k) ^(noise)) at timeframe k may be calculated using equation 2: V _(k) ^(noise)=(D _(k) ^(noise)*(D _(k) ^(noise))′)/(n−1)  Eq. 2

The noise spatial variance averaged over m successive profiles ending at timeframe k (aveV_(k) ^(noise)) may be calculated using Eq. 3: aveV _(k) ^(noise)=ave_(k−1) ^(noise)+(V _(k) ^(noise)−aveV _(k−1) ^(noise))/m for k>1  Eq. 3

Using the above calculations, the signal-plus-noise spatial variance may be calculated by de-trending the filtered delta profile of the filtered delta profile's mean, calculating the profile spatial variances of the instantaneous de-trended profile and the average de-trended profile. The averaging window may be specified at initialization. In the example, the SNR calculation uses the instantaneous profile spatial variance if instantaneous profile spatial variance value is small, such as less than ten percent of its average over the prior time points in the averaging window, to avoid a temporal lag when a hovering object departs. Otherwise, the SNR calculation may use the average profile spatial variance.

The de-trended profile (D_(k) ^(detrended)) may be calculated using equation 4: D _(k) ^(detrended)(i)=D _(k)(i)−mean(D _(k)), for i=1:n  Eq. 4

The de-trended profile averaged over p successive profiles ending at timeframe k (D_(k) ^(ave)) may be calculated using Eq. 5:

$\begin{matrix} {D_{k}^{ave} = {\left( {\sum\limits_{j = 0}^{p - 1}D_{k - j}^{detrended}} \right)/p}} & {{Eq}.\mspace{14mu} 5} \end{matrix}$

The spatial variance of the de-trended profile averaged over p successive profiles ending at timeframe k(V_(k) ^(aveprofile)) may be calculated using Eq. 6: V _(k) ^(aveprofile)=(D _(k) ^(ave)*(D _(k) ^(ave))′)n  Eq. 6

The instantaneous profile spatial variance (V_(k) ^(profile)) at timeframe k may be calculated using Eq. 7: V _(k) ^(profile)=(D _(k) ^(detrended)*(D _(k) ^(detrended))′/n  Eq. 7

The instantaneous profile spatial variance average at timeframe k for the prior p−1 timeframes (aveV_(k) ^(profile)) may be calculated using Eq. 8:

$\begin{matrix} {{{ave}\; V_{k}^{profile}} = {\left( {\sum\limits_{j = 1}^{p - 1}V_{k - j}^{profile}} \right)/\left( {p - 1} \right)}} & {{Eq}.\mspace{14mu} 8} \end{matrix}$

Thus, the SNR may be calculated using Eq. 9 (V _(k) ^(aveprofile)−aveV _(k) ^(noise))/aveV _(k) ^(noise), if V _(k) ^(profile)>0.1*aveV _(k) ^(profile) (V _(k) ^(profile)−aveV _(k) ^(noise))/aveV _(k) ^(noise), otherewise  Eq. 9

The profile may be segmented and segmented SNR may be calculated using the above equations for each segment. To perform profile segmentation, the local maxima and minima of the filtered delta profile may be calculated based on a minimum peak deviation initialized as a multiple (e.g., greater than six) of the noise estimate standard deviation (σ_(noise)).

Further, using the above, the position and height calculation (hereinafter referred to as Z) and jitter filtering may be calculated using the following technique. Position may be calculated using linear interpolation (e.g., three channel linear interpolation) in the example, which is common mode (CM) invariant. Other methods for calculating position may be used without departing from the scope of the invention. Z may be calculated as a function of SNR, which is CM invariant, and scaled to the range of [0-255], with 0 at the limiting height of detection and 255 within 1 mm of proximity. Z may be calculated to be proportional to height. Since SNR is a function of the hover height for a moderate sized finger, the SNR mapping may be inverted to provide a height estimate.

The position and Z estimates may be filtered to reduce positional jitter at low SNR using a non-linear low pass filter of the form shown in Eq. 10: x _(k+1) =αx _(k)+(1−α)u _(k)  Eq. 10

The above is only one set of example equations for calculating SNR, position and height using variance. Other equations and techniques may be used without departing from the scope of the invention. For example, the following presents an example set of equations for calculating SNR, position, and height using average absolute deviation (AAD). In the following example, various variables are used. Table 4 below provides a description of each variable.

TABLE 4 Variable Description AAD Average absolute deviation D Delta profile (i.e., the profile once the baseline is removed) n The number of positions as defined by number of sensor electrodes that capture measured data values for the profile i An iterator for iterating over the number of positions j An iterator for iterating over successive profiles k A specific timeframe m Number of successive profiles for noise calculation D_(k) ^(noise)(i) Profile noise estimate at timeframe k and position i AAD_(k) ^(noise)(i) AAD of noise at timeframe k and position i aveAAD_(k) ^(noise) Average of AAD of noise for timeframe k D_(k) ^(detrended)(i) De-trended profile at timeframe k and position i D_(k) ^(detrended) De-trended profile at timeframe k mean(D_(k)) Mean of the delta profile D_(k) ^(ave) De-trended profile averaged over successive profiles ending at timeframe k AAD_(k) ^(aveprofile) Spatial AAD of the de-trended profile averaged over successive profiles ending at timeframe k AAD_(k) ^(profile) Instantaneous spatial AAD of the de-trended profile at timeframe k aveAAD_(k) ^(profile) Average instantaneous spatial AAD of the de-trended profile at timeframe k over the prior p-1 timeframes

In the following example equations, consider the scenario in which a filtered delta profile D_(k) of dimension 1×n exists at timeframe k. Further, in the equations, AAD is used as the noise statistic, data plus noise signal statistic, and data statistic for the SNR calculations.

The noise AAD may be calculated by applying a spatial first difference to the filtered delta profile to estimate the profile noise, and calculating and recursively averaging over successive profiles the noise spatial AAD when the profile SNR is small, such as twenty five percent of the SNR threshold level. In one or more embodiments of the invention, the averaging improves the noise AAD estimate.

The profile noise signal estimate (D_(k) ^(noise)) may be calculated using Eq. 11: D _(k) ^(noise)(i)=D _(k)(i+1)−D _(k)(i) for i=1:n−1  Eq. 11

The instantaneous noise spatial AAD (AAD_(k) ^(noise)) at timeframe k may be calculated using Eq. 12: AAD_(k) ^(noise)=sum(|D _(k) ^(noise)|)/(n−1)  Eq. 12

The noise spatial AAD averaged over m successive profiles ending at timeframe k (aveV_(k) ^(noise)) may be calculated using Eq. 13: aveAAD_(k) ^(noise)=aveAAD_(k−1) ^(noise)(AAD_(k) ^(noise)−aveAAD_(k−1) ^(noise))/m for k>1  Eq. 13

The signal-plus-noise spatial AAD may be calculated by de-trending the filtered delta profile of its mean, and calculating the profile spatial AAD of the instantaneous de-trended profile of the current timeframe and the average de-trended profile. The averaging window may be specified at initialization. In the example, the SNR calculation may use the instantaneous profile spatial AAD if instantaneous profile spatial AAD value is small, such as less than ten percent of its average over the prior time points in the averaging window, to avoid a temporal lag when a hovering object departs. Otherwise, the SNR calculation may use the average profile spatial AAD.

The de-trended profile (D_(k) ^(detrended)) may be calculated using Eq. 14: D _(k) ^(detrended)(i)=D _(k)(i)−mean(D _(k)), for i=1:n  Eq. 14

The de-trended profile averaged over p successive profiles ending at timeframe k (D_(k) ^(ave)) may be calculated using Eq. 15:

$\begin{matrix} {D_{k}^{ave} = {\left( {\sum\limits_{j = 0}^{p - 1}D_{k - j}^{detrended}} \right)/p}} & {{Eq}.\mspace{14mu} 15} \end{matrix}$

Spatial AAD of the de-trended profile averaged over successive profiles ending at timeframe k (AAD_(k) ^(aveprofile)) may be calculated using Eq. 16: AAD_(k) ^(aveprofile)=sum(|D _(k) ^(ave)|)/n  Eq. 16

The instantaneous profile spatial AAD (AAD_(k) ^(profile)) at timeframe k may be calculated using Eq. 17: AAD_(k) ^(profile)=sum(|D _(k) ^(detrended)|)/n  Eq. 17

The average instantaneous spatial AAD of the de-trended profile at timeframe k over the prior p−1 timeframes (aveAAD_(k) ^(profile)) may be calculated using Eq. 18:

$\begin{matrix} {{{ave}\;{AAD}_{k}^{profile}} = {\left( {\sum\limits_{j = 1}^{p - 1}{AAD}_{k - j}^{profile}} \right)/\left( {p - 1} \right)}} & {{Eq}.\mspace{14mu} 18} \end{matrix}$

The SNR may be calculated using Eq. 19: (AAD_(k) ^(aveprofile)−aveAAD_(k) ^(noise))/aveAAD_(k) ^(noise), if AAD_(k) ^(profile)>0.1*aveAAD_(k) ^(profile) (AAD_(k) ^(profile)−aveAAD_(k) ^(noise))/aveAAD_(k) ^(noise), otherewise  Eq. 9

In the above, the SNR is common mode noise invariant. Further, the position and height may be calculated using the techniques discussed above with respect to the first example set of equations. As discussed above, these sets of equations are only examples. Other equations and techniques may be used without departing from the scope of the invention.

FIG. 6 shows a flowchart determining whether an input object is hovering or in the process of a swipe. A hovering input object is one in which the position of the input object in the sensing region is not intending to be changed rapidly. In other words, a user may be attempting to move to and sustain the input object in a fixed position with respect to the input surface. A hovering input object may change positional information with respect to height in one or more embodiments of the invention. A swipe is an intentional movement of the input object. For example, a swipe may be a part of a gesture. As used herein, any intentional movement of the input object with respect to the input surface may be considered a swipe. Thus, a swipe may encompass additional gestures besides single directional gestures. For FIG. 6 consider the scenario in which at least one input object is detected in the sensing region and the detection has occurred over at least two timeframes. Detecting the input object in the sensing region may be performed, for example, using SNR as discussed above and in FIG. 2. Other methods for detecting the input object may be used.

In Step 601, for a current timeframe, positional information specifying an input object along an axis of a sensing region is obtained. Obtaining the positional information may be performed as discussed above and in FIG. 2. Other methods for obtaining positional information may be used.

In Step 603, a velocity of the input object along the axis is calculated using positional information of current timeframe and past timeframes. Specifically, calculating the velocity includes identifying the amount of movement of the input object along the axis in relation to the amount of time elapsed between timeframes in which the input object is detected.

In Step 605, a determination is made whether object motion was detected in the prior timeframe. Specifically, a determination is made whether motion was detected in the timeframe before the current timeframe. If prior motion was not detected, in Step 607, a determination is made whether the current timeframe calculated velocity is less than a minimum swipe rate in one or more embodiments of the invention. The minimum swipe rate is the minimum velocity in which a swipe is assumed to occur. In one or more embodiments of the invention, the minimum swipe rate may be configurable and/or preset as a default.

If the velocity is less than a minimum swipe rate, then a state parameter for the axis is marked as detecting hover in Step 613. The state parameter for an axis specifies the current status (e.g., whether in swipe or hover) of the input object along the axis. Specifically, if the velocity of the input object is moving less than the minimum swipe rate along the axis, then the input object may be detected as being a hover rather than a swipe.

If the velocity is not less than a minimum swipe rate, then a state parameter for the axis is marked as not detecting hovering in Step 611. Specifically, if the velocity of the input object is not moving less than the minimum swipe rate along the axis, then the input object may not be detected as being a hover. In other words, the state parameter may be marked for detecting a swipe.

If prior frame object motion was detected in Step 605, in Step 609, a determination is made whether the current timeframe calculated velocity is less than a maximum hover rate. The maximum hover rate is the maximum velocity a hover input object may have. In one more embodiments, the maximum hover rate may be configurable and/or preset as a default.

If the velocity is less than a maximum rate, then a state parameter for the axis is marked as detecting hover in Step 613. If velocity is not less than a maximum rate then a state parameter for the axis is not marked as detecting hover. In other words, the state parameter may be marked for detecting a swipe.

In Step 615, a determination is made whether another axis to be analyzed exists for the current timeframe in one or more embodiments of the invention. If another axis exists, then the flow may proceed with the next axis.

In Step 617, if another axis does not exist, then the state parameter of each axis is combined to obtain a combined state parameter in one or more embodiments of the invention. For example, combining the state parameters may include setting the combined state parameter to swipe or not hovering if any one of the axis are set as swipe. Other rules or techniques may be used for combining state parameters may be used without departing from the scope of the claims.

In Step 619, an action is performed based on the combined state parameter. The action may be performed as discussed above in relation to Step 221 of FIG. 2.

Although FIG. 6 specifies that the determination steps use “less than” or “greater than”, “less than or equal to” and/or “greater than or equal to”, respectively, may be used without departing from the scope of the invention.

The following is an example. The following is for example purposes only and not intended to limit the scope of the claims. Consider the scenario in which Ted, a user, is using an address book on his smart phone with a touch screen display to call Scott. Ted also has Schmitt, Sanchez, Schubert, Scriber, and Seng in his address book along with several other names. Ted has large fingers and is jittery from drinking caffeinated coffee.

Continuing with the example, Ted scrolls through the address book by a quick single direction swipe downward approximately two centimeters above the sensing surface (i.e., in the above surface sensing region). For each timeframe, measured data corresponding to a resulting signal received with each sensor electrode in the smart phone is generated, representing a change in capacitance determined by the sensor electrodes, and the measured data values for the timeframe may be represented as a profile. Based on the profile, for each timeframe, an SNR is calculated for the profile and the Ted's finger is detected as being in the above surface sensing region. Ted's finger is detected despite the fact that the two centimeter distance to Ted's finger means that a large amount of noise exists in the signal from the sensor electrodes. Thus, for each timeframe, positional information is calculated and specifies the position of Ted's finger at the timeframe.

Continuing with the example, because the velocity of the Ted's finger in the y-axis is greater than the maximum hover rate over the course of the timeframes, the state parameter indicates that Ted's finger is swiping and, thus, the address book on Ted's smart phone appears to scroll to the “S” names. After address book scrolls to the “S” names, Ted realizes that Scott is displayed on the touch screen. Accordingly, Ted lets his finger hover over what he believes is the position for Scott. As discussed above, based on the SNRs calculated for the timeframes, Ted's finger is detected despite the large relative amount of noise caused by the height of Ted's finger. Because Ted is jittery from the coffee, Ted's finger is not perfectly still. Nevertheless, Ted's finger has a velocity of less than the minimum swipe rate and stays less than the maximum hover rate along all axis. Thus, a hover is detected. The action performed may be to highlight the name in which Ted is actually hovering over. In other words, a hovering input object in the above surface sensing region may be to highlight a GUI component that is being hovered over, whereas a stationary input object in the surface sensing region may be to select the GUI component. Because of Ted's large fingers, he learns that he is actually hovering over Scriber instead of Scott. Accordingly, Ted moves his finger upward to Scott and hovers over Scott. This time, the hover is detected as being over Scott and Scott is highlighted using the SNR and the velocity of Ted's finger. When Ted sees that Scott is highlighted, Ted taps on the sensing surface to select Scott and Scott is called.

FIG. 7 shows an example in one or more embodiments of the invention. The example discussed below is for example purposes only and not intended to limit the scope of the invention. FIG. 7 shows sensing region (700) showing a schematic of capacitance detection along the x-axis. Specifically, the sensing region (700) is shown as the box with the dark border. A finger (702) is an input object in the sensing region. Although not specifically shown in FIG. 7, consider the scenario in which the finger is in the above surface sensing region rather than physically touching the input surface.

In the example, measured data value may be generated corresponding to the resulting signals received with each of the thirty-six sensor electrodes along the x-axis, the measured data values representing the amount of capacitance detected across the entire column as shown by the lines on the sensing region (700). The number of sensor electrodes is only for example purposes. More or fewer sensor electrodes may exist without departing from the scope of the invention. The measured data values are graphed on the graph of the profile having both data signal and noise signal (704). Specifically, the x-axis of the graph (706) corresponds to the sensor electrode and the y-axis of the graph corresponds to value of the measured data value (i.e., the value of the signal from the sensor electrode) (708). Below the graph of the profile having both data signal and noise signal is a graph of a profile having just data signal (i.e., the noise portion of the signal is removed) (710). Similar to the graph (706), the x-axis of the graph (712) corresponds to the sensor electrode and the y-axis of the graph corresponds to value of the measured data value (i.e., the value of the signal from the sensor electrode) (714). In other words, graph (710) is a graph of an ideal profile having no noise. As shown in FIG. 7, the signal includes much noise as evident by the various peaks in the graph (704) as compared to graph (710) even though only one input object is in the sensing region. One or more embodiments of the invention are able to distinguish, for a particular timeframe, whether one or more input objects are actually in the sensing region or whether only noise exists based on the SNR for the particular timeframe. Further, in one or more embodiments of the invention, the profile may be filtered based on the SNR so that smoother data, such as that shown in graph (710) may be used to determine the positional information.

Thus, the embodiments and examples set forth herein were presented in order to best explain the present invention and its particular application and to thereby enable those skilled in the art to make and use the invention. However, those skilled in the art will recognize that the foregoing description and examples have been presented for the purposes of illustration and example only. The description as set forth is not intended to be exhaustive or to limit the invention to the precise form disclosed. 

What is claimed is:
 1. A processing system for capacitance sensing, comprising: a sensor module comprising sensor circuitry coupled to a plurality of sensor electrodes, the sensor module configured to generate sensing signals received with the plurality of sensor electrodes; and a determination module connected to the plurality of sensor electrodes and configured to: obtain, for a predetermined timeframe, a profile from the sensing signals; obtain, for the predetermined timeframe, a noise statistic; calculate, for the predetermined timeframe, a data signal statistic for the predetermined timeframe using the profile; calculate a signal to noise ratio (SNR) by dividing the data signal statistic by the noise statistic; and detect, in response to the SNR satisfying a predetermined detection threshold, an input object in a sensing region of the capacitance sensing input device.
 2. The processing system of claim 1, wherein the signal statistic is variance of data signal in the profile, and wherein the noise statistic is variance of noise signal in the profile.
 3. The processing system of claim 1, wherein the signal statistic is deviation of data signal in the profile, and wherein the noise statistic is deviation of noise signal in the profile.
 4. The processing system of claim 1, wherein the sensing region comprises a surface sensing region and an above surface sensing region above the surface sensing region with respect to the sensor module, and wherein the input object is detected in the above surface sensing region.
 5. The processing system of claim 1, wherein the determination module is further configured to: perform an action based on detecting the input object.
 6. The processing system of claim 5, wherein the determination module is further configured to: filter the profile based on the SNR to obtain a filtered profile; calculate a maximum of the filtered profile; and calculate positional information of the input object based on the maximum, wherein performing the action comprises reporting the positional information.
 7. The processing system of claim 6, wherein filtering the profile comprises: selecting, from a plurality of spatial filter templates, a filter template; and applying the filter template to the profile.
 8. The processing system of claim 6, wherein the determination module is further configured to: segment the filtered profile to obtain a segmented profile comprising a plurality of segments, wherein the maximum is a local maximum for one of the plurality of segments.
 9. The processing system of claim 6, wherein the determination module is further configured to: calculate a height of the input object over the sensing region using the SNR.
 10. The processing system of claim 1, wherein the profile is an X-axis profile, the SNR is an X-axis SNR, and the detecting, when the SNR satisfies the predetermined detection threshold, the input object in the sensing region produces a first result, wherein the determination module is further configured to: obtain, for the predetermined timeframe, a Y-axis profile from the capacitance sensing input device; calculate a Y-axis SNR using the Y-axis profile; detect, for a Y-axis, when the Y-axis SNR satisfies the predetermined detection threshold, the input object in the sensing region to produce a second result; and aggregate the first result and the second result to obtain an aggregated result, wherein performing the action is based on the aggregated result.
 11. The processing system of claim 1, wherein the determination module is further configured to: generate a noise estimate for the current frame; and calculate a noise statistic for the current frame; and calculate a temporal average of the noise statistic using the noise statistic estimate from the previous frame, wherein calculating the signal statistic comprises removing noise from the profile using the temporal average of the noise statistic.
 12. The processing system of claim 1, wherein the sensor module is configured to transmit transmitter signals with the plurality of sensor electrodes and receive resulting signals with the plurality of sensor electrodes, the resulting signals comprising affects corresponding to the transmitter signals.
 13. The processing system of claim 1, wherein the sensor module is configured to transmit transmitter signals with a first portion of the plurality of sensor electrodes and receive resulting signals with a second portion of the plurality of sensor electrodes, the resulting signals comprising affects corresponding to the transmitter signals.
 14. The processing system of claim 1, wherein the determination module is further configured to: based on detecting the input object in the sensing region: calculate a velocity of the input object using a plurality of profiles, wherein the plurality of profiles comprises the profile; detect hovering of the input object when the velocity is less than a minimum swipe rate; and detect swipe of the input object when the velocity is greater than a maximum hover rate.
 15. A method for capacitance sensing, comprising: obtaining, for a predetermined timeframe, a profile from sensing signals measured with sensor electrodes of a capacitance sensing input device; obtaining, for the predetermined timeframe, a noise statistic; calculating, for the predetermined timeframe, a data signal statistic for the predetermined timeframe using the profile; calculating a signal to noise ratio (SNR) by dividing the data signal statistic by the noise statistic; and detecting, in response to the SNR satisfying a predetermined detection threshold, an input object in a sensing region of the capacitance sensing input device.
 16. The method of claim 15, wherein the signal statistic comprises at least one selected from a group consisting of a variance of data signal in the profile and a deviation of the data signal in the profile, and wherein the noise statistic comprises at least one selected from a group consisting of a variance of noise signal in the profile and a deviation of the noise signal in the profile.
 17. The method of claim 15, wherein the sensing region comprises a surface sensing region and an above surface sensing region above the surface sensing region with respect to the capacitance sensing input device, and wherein the input object is detected in the above surface sensing region.
 18. The method of claim 15, further comprising: filtering the profile based on the SNR to obtain a filtered profile; calculating a maximum of the filtered profile; calculating positional information of the input object based on the maximum; and report the positional information.
 19. The method of claim 15, wherein the profile is an X-axis profile, the SNR is an X-axis SNR, and the detecting, when the SNR satisfies the predetermined detection threshold, the input object in the sensing region produces a first result, wherein the method further comprises: obtaining, for the predetermined timeframe, a Y-axis profile from the capacitance sensing input device; calculating a Y-axis SNR using the Y-axis profile; detecting, for a Y-axis, when the Y-axis SNR satisfies the predetermined detection threshold, the input object in the sensing region to produce a second result; and aggregating the first result and the second result to obtain an aggregated result, performing an action based on the aggregated result.
 20. The method of claim 15, further comprising: generating a noise estimate for the current frame; and calculating a noise statistic for the current frame; and calculating a temporal average of the noise statistic using the noise statistic estimate from the previous frame, wherein calculating the signal statistic comprises removing noise from the profile using the temporal average of the noise statistic.
 21. An input device comprising: a plurality of sensor electrodes configured to generate sensing signals for a predetermined timeframe; and a processing system connected to the plurality of sensor electrodes and configured to: obtain, for a predetermined timeframe, a profile from the sensing signals; obtain, for the predetermined timeframe, a noise statistic using the capacitance sensing input device; calculate, for the predetermined timeframe, a data signal statistic for the predetermined timeframe using the profile; calculate a signal to noise ratio (SNR) by dividing the data signal statistic by the noise statistic; and detect, in response to the SNR satisfying a predetermined detection threshold, an input object in a sensing region of the capacitance sensing input device. 